package tp1POO.Persistencia;

import tp1POO.Modelo.ObjetoPOO;
import tp1POO.Modelo.Tipo;
import tp1POO.Modelo.Veiculo;

public class VeiculoDAOTexto extends DAOTexto {
	/**
	 * Salva objeto do tipo Veiculo no arquivo texto
	 * @param parObj objeto a ser salvo
	 */
	@Override
	public void salvar(ObjetoPOO parObj) {
		//Lista ids de locacoes
		Veiculo parVeiculo = (Veiculo) parObj;
		
		String tmpValue;
		tmpValue = parVeiculo.getIdentifier() + FileManager.getSeparator() +
		parVeiculo.getPlaca() + FileManager.getSeparator() +
		parVeiculo.getMarca() + FileManager.getSeparator() +
		parVeiculo.getModelo() + FileManager.getSeparator() +
		parVeiculo.getCor() + FileManager.getSeparator() +
		parVeiculo.getObservacoes() + FileManager.getSeparator() +
		parVeiculo.getOpcionais() + FileManager.getSeparator() +
		parVeiculo.getTipoVeiculo().getIdentifier() + FileManager.getSeparator() +
		parVeiculo.getLocacoes().toString();

		//Salva objetos dependentes
		GerenciadorObjetos.obterInstancia().salvarObj(parVeiculo.getTipoVeiculo());
		gestor.SalvarObjeto(tmpValue, parVeiculo.getClass().getSimpleName());
	}
	/**
	 * Converte uma string em um ObjetoPOO do tipo Veiculo
	 * @param parString String a ser convertida
	 * @return um objeto construido de acordo com seu tipo
	 */
	@Override
	public ObjetoPOO converterObj(String parString) {
		if (parString != null && parString.length() > 0)
		{
			String s[] = parString.split(FileManager.getSeparator());
			Veiculo veic = new Veiculo(s[1], s[2], s[3]);
			veic.setCor(s[4]);
			veic.setObservacoes(s[5]);
			veic.setOpcionais(s[6]);
			veic.setTipoVeiculo((Tipo)GerenciadorObjetos.obterInstancia().obterObj(new Tipo(s[7])));
			return (veic);
		}
		return null;
	}
}
